from PySide6.QtWidgets import QToolButton
from PySide6.QtCore import Qt, QSize
from PySide6.QtGui import QIcon
import os

class CustomToolButton(QToolButton):
    def __init__(self, text="", icon=None, parent=None):
        super().__init__(parent)
        
        # 设置提示文本，但不显示按钮文字
        self.setToolTip(text)
        
        # 确保icons文件夹存在
        os.makedirs("icons", exist_ok=True)
        
        # 设置默认图标文件路径
        default_icon = "icons/lock.png"
        
        # 如果没有指定图标，使用默认图标
        if icon is None:
            icon = default_icon
        
        # 检查图标文件是否存在
        if isinstance(icon, str) and not os.path.exists(icon):
            print(f"警告: 图标文件 '{icon}' 不存在，使用默认图标")
            icon = default_icon
            
            # 如果默认图标也不存在，发出警告
            if not os.path.exists(default_icon):
                print(f"警告: 默认图标文件 '{default_icon}' 也不存在，请确保该文件存在")
        
        self.setIcon(icon)
        
        # 设置为只显示图标，不显示文字
        self.setToolButtonStyle(Qt.ToolButtonIconOnly)
        self.setAutoRaise(True)
        self.setIconSize(QSize(16, 16))
    
    def setText(self, text):
        """设置按钮文本（只作为工具提示）"""
        # 不实际设置文本，只设置工具提示
        self.setToolTip(text)
        
    def setIconSize(self, size):
        """设置图标大小"""
        if isinstance(size, int):
            size = QSize(size, size)
        super().setIconSize(size)
        
    def setIcon(self, icon):
        """设置按钮图标"""
        if isinstance(icon, str):
            icon = QIcon(icon)
        super().setIcon(icon) 